/**
 * @param {number[]} nums
 * @return {number}
 */
// 异或运算
// 异或运算满足交换律和结合律
// 则a^b^b^a^c === (a^a)^(b^b)^c
// 自己异或自己为0,0和其他异或还是其他，所以剩下的就是出现一次的
var singleNumber = function(nums) {
    let res = 0
    for(let i = 0; i < nums.length; i++) {
        res ^= nums[i]
    }
    return res
};